// 路由的相关配置，得到路由实例。
import Vue from "vue";
import VueRouter from "vue-router";

// 导入token
import auth from "@/utils/auth";

Vue.use(VueRouter);

// 登录页面 (路由懒加载 被访问时才加载被访问的组件)
const Login = () => import("@/views/login");
// 引入首页2、
const Layout = () => import("@/views/Layout");
// 引入二级页面 欢迎页面
const welcome = () => import("@/views/welcome");
// 内容页面
const Article = () => import("@/views/article");
//导入 素材管理
const Image = () => import("@/views/image");
// 导入发布文章
const Publish = () => import("@/views/publish");
// 导入评论管理页面
const Comment = () => import("@/views/comments");
//  导入粉丝管理页面
const Fans = () => import("@/views/fans");
// 导入个人设置
const Setting = () => import("@/views/setting");
// 导入404页面
const NotFound = () => import("@/views/404");
// 路由规则
const routes = [
  { path: "/login", component: Login },
  //  首页3、路由规则 重定向
  { path: "/", redirect: "welcome" },
  {
    path: "/",
    component: Layout,
    // 欢迎页面
    children: [
      //  首页
      { path: "welcome", component: welcome },
      // 内容页面
      { path: "article", component: Article },
      // 素材管理
      { path: "image", component: Image },
      // 发布文章
      { path: "publish", component: Publish },
      //  评论管理
      { path: "comment", component: Comment },
      // 粉丝管理
      { path: "fans", component: Fans },
      // 个人设置
      { path: "setting", component: Setting }
    ]
  },
  // 以上规则没有匹配，使用一个统配规则 指向一个404组件即可
  { path: "*", component: NotFound }
];

// 路由实例
const router = new VueRouter({ routes });

// 导航守卫信息拦
router.beforeEach((to, from, next) => {
  // 结构获取得到用户信息的函数
  const { getUser } = auth;
  //  除登陆之外其他页面都需要判断是否带有token
  if (to.path !== "/login" && !getUser().token) return next("/login");
  next();
});

// 导出实例
export default router;
